JOIN子句

您所在的位置:网站首页 left join on多条件关联 JOIN子句

JOIN子句

2024-07-13 14:21| 来源: 网络整理| 查看: 265

JOIN子句

Join通过使用一个或多个表的公共值合并来自一个或多个表的列来生成新表。 它是支持SQL的数据库中的常见操作,它对应于 关系代数 加入。 一个表连接的特殊情况通常被称为 “self-join”.

语法:

SELECT FROM [GLOBAL] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI|ANY|ASOF] JOIN (ON )|(USING ) ...

从表达式 ON 从子句和列 USING 子句被称为 “join keys”. 除非另有说明,加入产生一个 笛卡尔积 从具有匹配的行 “join keys”,这可能会产生比源表更多的行的结果。

支持的联接类型​

所有标准 SQL JOIN 支持类型:

INNER JOIN,只返回匹配的行。LEFT OUTER JOIN,除了匹配的行之外,还返回左表中的非匹配行。RIGHT OUTER JOIN,除了匹配的行之外,还返回右表中的非匹配行。FULL OUTER JOIN,除了匹配的行之外,还会返回两个表中的非匹配行。CROSS JOIN,产生整个表的笛卡尔积, “join keys” 是 不 指定。

JOIN 没有指定类型暗指 INNER. 关键字 OUTER 可以安全地省略。 替代语法 CROSS JOIN 在指定多个表 FROM 用逗号分隔。

ClickHouse中提供的其他联接类型:

LEFT SEMI JOIN 和 RIGHT SEMI JOIN,白名单 “join keys”,而不产生笛卡尔积。LEFT ANTI JOIN 和 RIGHT ANTI JOIN,黑名单 “join keys”,而不产生笛卡尔积。LEFT ANY JOIN, RIGHT ANY JOIN and INNER ANY JOIN, partially (for opposite side of LEFT and RIGHT) or completely (for INNER and FULL) disables the cartesian product for standard JOIN types.ASOF JOIN and LEFT ASOF JOIN, joining sequences with a non-exact match. ASOF JOIN usage is described below.严格​note

可以使用以下方式复盖默认的严格性值 join_default_strictness 设置。

Also the behavior of ClickHouse server for `ANY JOIN` operations depends on the [any_join_distinct_right_table_keys](/docs/zh/operations/settings/settings#any_join_distinct_right_table_keys) setting.ASOF JOIN使用​

ASOF JOIN 当您需要连接没有完全匹配的记录时非常有用。

该算法需要表中的特殊列。 该列需要满足:

必须包含有序序列。可以是以下类型之一: Int,UInt, Float*, Date, DateTime, Decimal*.不能是JOIN子句中唯一的列

语法 ASOF JOIN ... ON:

SELECT expressions_listFROM table_1ASOF LEFT JOIN table_2ON equi_cond AND closest_match_cond

您可以使用任意数量的相等条件和一个且只有一个最接近的匹配条件。 例如, SELECT count() FROM table_1 ASOF LEFT JOIN table_2 ON table_1.a == table_2.b AND table_2.t , >=,



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3